<template>
  <div class="app">
    <div v-if="isShowEdit">
      <input type="text" v-model="editValue" ref="inp" />
      <button>确认</button>
    </div>
    <div v-else>
      <span>{{ title }}</span>
      <button @click="handleEdit">编辑</button>
    </div>
  </div>
</template>

<script>
/*
Vue异步更新、$nextTick
  需求:编辑标题，编辑框自动聚焦
  1.点击编辑，显示编辑框
  2.让编辑框，立刻获取焦点
    this.isShowEdit = true  //显示输入框 
    this.$refs.inp.focus() //获取售点
  *****问题:"显示之后"，立刻获取焦点是不能成功的!
    原因: Vue 是 异步更新 DOM (提升性能)
  *****解决方法
  Vue异步更新、$nextTick
     $nextTick:等 DOM 更新后才会触发执行此方法里的函数体
     语法:this.$nextTick(函数体)
        this.$nextTick(() => {
          this.$refs.inp.focus()
        }
*/
export default {
  data() {
    return {
      title: '大标题',
      isShowEdit: false,
      editValue: '',
    }
  },
  methods: {
    handleEdit() {
      this.isShowEdit = true
      this.$nextTick(() => {
        this.$refs.inp.focus()
      })
    }
  },
}
</script>

<style>
</style>